package com.teamwork.ZuccEcho.Entity;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.Date;
import java.util.List;
import java.util.Set;

////课程
//@Entity
//@Table(name = "Class", schema = "", catalog = "")
//public class Class {
//    private long cId;//课程id
//    private String cName;//课程名称
//    private String area;//授课地点
//    private String cTerm;//课程所属学期
//    private String timeInterval;//课程上下课的时间区间
////    private String tchId;//授课教师id
//    private List<Student> students;//课程的学生名单
//    private String cStatus;//课程状态（未开课，进行中，已关闭，已注销）
//    private Date createDate;//创建课程时间
//    private Date closeDate;//关闭课程时间
//    private Date cancelDate;//注销课程时间
//
//    @Id
//    @Column(name = "cId")
//    @GeneratedValue(strategy = GenerationType.IDENTITY)
//    public long getcId() {
//        return cId;
//    }
//
//    public void setcId(long cId) {
//        this.cId = cId;
//    }
//
//    @Basic
//    @Column(name = "cName")
//    public String getcName() {
//        return cName;
//    }
//
//    public void setcName(String cName) {
//        this.cName = cName;
//    }
//
//    @Basic
//    @Column(name = "area")
//    public String getArea() {
//        return area;
//    }
//
//    public void setArea(String area) {
//        this.area = area;
//    }
//
//    @Basic
//    @Column(name = "cTerm")
//    public String getcTerm() {
//        return cTerm;
//    }
//
//    public void setcTerm(String cTerm) {
//        this.cTerm = cTerm;
//    }
//
//    @Basic
//    @Column(name = "timeInterval")
//    public String getTimeInterval() {
//        return timeInterval;
//    }
//
//    public void setTimeInterval(String timeInterval) {
//        this.timeInterval = timeInterval;
//    }
//
//    @Basic
//    @Column(name = "cStatus")
//    public String getcStatus() {
//        return cStatus;
//    }
//
//    public void setcStatus(String cStatus) {
//        this.cStatus = cStatus;
//    }
//
//    @Basic
//    @Column(name = "createDate")
//    public Date getCreateDate() {
//        return createDate;
//    }
//
//    public void setCreateDate(Timestamp createDate) {
//        this.createDate = createDate;
//    }
//
//    @Basic
//    @Column(name = "closeDate")
//    public Date getCloseDate() {
//        return closeDate;
//    }
//
//    public void setCloseDate(Timestamp closeDate) {
//        this.closeDate = closeDate;
//    }
//
//    @Basic
//    @Column(name = "cancelDate")
//    public Date getCancelDate() {
//        return cancelDate;
//    }
//
//    public void setCancelDate(Timestamp cancelDate) {
//        this.cancelDate = cancelDate;
//    }
//
//    @Override
//    public boolean equals(Object o) {
//        if (this == o) return true;
//        if (o == null || getClass() != o.getClass()) return false;
//        Class that = (Class) o;
//        return cId == that.cId &&
//                Objects.equals(cName, that.cName) &&
//                Objects.equals(area, that.area) &&
//                Objects.equals(cTerm, that.cTerm) &&
//                Objects.equals(timeInterval, that.timeInterval) &&
//                Objects.equals(cStatus, that.cStatus) &&
//                Objects.equals(createDate, that.createDate) &&
//                Objects.equals(closeDate, that.closeDate) &&
//                Objects.equals(cancelDate, that.cancelDate);
//    }
//
//    @Override
//    public int hashCode() {
//        return Objects.hash(cId, cName, area, cTerm, timeInterval, cStatus, createDate, closeDate, cancelDate);
//    }
//}

//课程
@Entity
@Setter
@Getter
//@Data
public class Course {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long c_id;//课程id
    private String c_name;//课程名称
    private String c_area;//授课地点
    private String c_term;//课程所属学期
    private String c_interval;//课程上下课的时间区间
    private String c_status;//课程状态（未开课，进行中，已关闭，已注销）
    private Date c_createdate;//创建课程时间
    private Date c_closedate;//关闭课程时间
    private Date c_canceldate;//注销课程时间

//    public long getC_id() {
//        return c_id;
//    }
//
//    public String getC_name() {
//        return c_name;
//    }
//
//    public String getC_area() {
//        return c_area;
//    }
//
//    public String getC_term() {
//        return c_term;
//    }
//
//    public String getC_interval() {
//        return c_interval;
//    }
//
//    public String getC_status() {
//        return c_status;
//    }
//
//    public Date getC_createdate() {
//        return c_createdate;
//    }
//
//    public Date getC_closedate() {
//        return c_closedate;
//    }
//
//    public Date getC_canceldate() {
//        return c_canceldate;
//    }

    //    @OneToMany()
    @OneToMany(mappedBy="course")
//    @JoinColumn(name="c_id")//在子表中的外键名
    private List<Questionnaire> questionnaireList;

    @ManyToMany(fetch=FetchType.LAZY)
    @JoinTable(name="course_student"
            ,joinColumns={@JoinColumn(name="c_id")}
            ,inverseJoinColumns={@JoinColumn(name="stu_id")})
    private Set<Student> students;

    @ManyToOne
    @JoinColumn(name="tch_id")//在子表中的外键名
    private Teacher teacher;//老师

    @OneToMany(mappedBy = "course")
    private List<Info> infoList;

    @Override
    public String toString() {
        return "Course{" +
                "c_id=" + c_id +
                ", c_name='" + c_name + '\'' +
                ", c_area='" + c_area + '\'' +
                ", c_term='" + c_term + '\'' +
                ", c_interval='" + c_interval + '\'' +
                ", c_status='" + c_status + '\'' +
                ", c_createdate=" + c_createdate +
                ", c_closedate=" + c_closedate +
                ", c_canceldate=" + c_canceldate +
                '}';
    }
}